package cn.tedu.demo;

import org.junit.jupiter.api.Test;

/*本类用于多态中元素的测试*/
public class TestDemo2 {
    @Test
    public void test(){
        Cat2 cat2 = new Cat2();
        System.out.println(cat2.sum);
        cat2.eat();
        cat2.play();
        /*创建多态对象
        父类引用 指向子类对象
        编译看左边运行看右边
        多态中成员变量的引用都是父类的
        多态中方法的声明看的是父类的，实现的是子类的
        静态资源属于类不存在重写的现象，只是恰好两个类中有两个同名的静态方法
        如果多态中存在静态资源 调用的是父类资源
        */

        Anamal2 animal2 = new Cat2();
        System.out.println(animal2.sum);//父类的
        animal2.eat();
        animal2.play();           
    }
}

class Anamal2 {
    int sum=10;
    public void eat(){
        System.out.println("吃啥都行");
    }
    public static void play(){
        System.out.println("玩啥都行");
    }
}
/*多态的前提 继承+重写*/
class Cat2 extends Anamal2 {
    int sum=100;

    @Override/*重写注解@Override*/
    public void eat() {
        System.out.println("小猫爱吃小鱼干");
    }
    public static void play(){
        System.out.println("汤姆 And 杰瑞");
    }

}
